package com.ufenlei.alarm
{
	import flash.sampler.NewObjectSample;
	/**
	 * 输入框管理
	 * 用于识别用户的输入  
	**/
	public class InputManager
	{
		public static var INPUT_TYPE_UNKNOW:uint = 0;
		public static var INPUT_TYPE_PERIOD:uint = 1;
		public static var INPUT_TYPE_POINT:uint = 2;
		private static var patter1:RegExp = /^\s*\d*\s*$/i; //匹配纯数字
		private static var patter2:RegExp = /^\s*(\d*h)?\s*(\d*)?m?\s*(\d*)?s?\s*$/i; //匹配 00h 00m 00n
		private static var patter3:RegExp = /^\s*(\d{1,2}):(\d{1,2})(:)?(\d{1,2})?\s*([ap]m)?\s*$/i //匹配  00:00
		/**
		 * 用户输入的解析方法，将用户的输入转化为字符串
		 * 参数 ： 用户输入的字符串
		 * 返回 ： AlarmTime对象
		 * 
		 **/
		public static function parseInput(text:String):AlarmTime{
			var r:Array,s:Number;
			if( patter1.test(text) ){
				return new AlarmTime(parseInt(text)*1000,true);
			}else if(patter2.test(text)){
				r = text.match( patter2 );
				var h:uint = r[1]?parseInt(r[1]):0;
				var m:uint = r[2]?parseInt(r[2]):0;
				var sec:uint = r[3]?parseInt(r[3]):0;
				s = h*60*60 + m*60 + sec;
				return new AlarmTime(s*1000,true);
			}else if(patter3.test(text)){
				return new AlarmTime(getTime(text),false);
			}
			return null;
		}
		/**
		 * 解析输入时间点,如输入10:20 pm 将解析成  一个今天晚上10:20的TimeStamp
		 **/
		public static function getTime(input:String):Number{
			var r:Array = input.match(patter3);
			var h:uint = r[1]?parseInt(r[1]):0;
			var m:uint = r[2]?parseInt(r[2]):0;
			var s:uint = r[4]?parseInt(r[4]):0;
			var p:String = r[5];
			if( p && p == 'pm' && h < 12) h += 12;
			var d:Date = new Date();
			d.setHours(h,m,s,0);
			return d.time;
		}
	}
}